package cn.iocoder.yudao.module.peizhen.service.withdraw;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.peizhen.controller.admin.withdraw.vo.*;
import cn.iocoder.yudao.module.peizhen.controller.app.withdraw.vo.AppWithdrawPageReqVO;
import cn.iocoder.yudao.module.peizhen.controller.app.withdraw.vo.AppWithdrawSaveReqVO;
import cn.iocoder.yudao.module.peizhen.dal.dataobject.withdraw.WithDrawAndStaffDO;
import cn.iocoder.yudao.module.peizhen.dal.dataobject.withdraw.WithdrawDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 员工提现 Service 接口
 *
 * @author duanxinli
 */
public interface WithdrawService {

    /**
     * 创建员工提现
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createWithdraw(@Valid WithdrawSaveReqVO createReqVO);

    /**
     * 更新员工提现
     *
     * @param updateReqVO 更新信息
     */
    void updateWithdraw(@Valid WithdrawSaveReqVO updateReqVO);

    /**
     * 删除员工提现
     *
     * @param id 编号
     */
    void deleteWithdraw(Integer id);

    /**
     * 获得员工提现
     *
     * @param id 编号
     * @return 员工提现
     */
    WithdrawDO getWithdraw(Integer id);

    /**
     * 获得员工提现分页
     *
     * @param pageReqVO 分页查询
     * @return 员工提现分页
     */
    PageResult<WithDrawAndStaffDO> getWithdrawPage(WithdrawPageReqVO pageReqVO);


    /**
     * 创建员工提现
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createWithdraw(@Valid AppWithdrawSaveReqVO createReqVO);

    /**
     * 更新员工提现
     *
     * @param updateReqVO 更新信息
     */
    void updateWithdraw(@Valid AppWithdrawSaveReqVO updateReqVO);



    /**
     * 获得员工提现分页
     *
     * @param pageReqVO 分页查询
     * @return 员工提现分页
     */
    PageResult<WithDrawAndStaffDO> getWithdrawPage(AppWithdrawPageReqVO pageReqVO);

    void checkWithdraw(WithdrawSaveReqVO updateReqVO);
}